logo头像

野渡's小小知识乐园

《TCP-IP详解卷1》第1章 概述

TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目。到90年代已发展成为计算机之间最常应用的组网形式。它是一个真正的开放系统,因为协议族的定义及其多种实现可以不用花钱或者花很少的钱就可以公开的得到。它成为被称作”全球互联网”或”因特网”的基础,该广域网(WAN)已包含超过100万台遍布世界各地的计算机。

1、分层

网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如下:

image

每一层负责不同的功能:

  • 链路层:有时也称作数据链路层或网络接口层。通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆的物理接口细节。
  • 网络层:有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Interner组管理协议)。
  • 运输层:主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
  • 应用层:负责处理特定的应用程序细节。常见的应用程序如:Telnet远程登录、 FTP文件传输协议、SMTP简单邮件传送协议。

2、路由器

人们又把多个网络连在一起形成一个网络的网络,或称作互连网。一个互连网(Internet)就是一组通过相同协议族互连在一起的网络。

构成互连网最简单的方法是把两个或多个网络通过路由器进行连接。它是一种特殊的用于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太网,令牌环网,点对点的链接和FDDI(光纤分布式数据接口)等等。

注意,历史上这些盒子称作网关(gateway),但现在网关这个术语只用来表示应用层网关:一个连接两种不同协议族的进程(例如TCP/IP和IBM的SNA),它为某个特定的应用程序服务(常常是电子邮件或文件传输)

image

在TCP/IP协议族中,网络层IP提供的是一种不可靠的服务。也就是说,它只是尽可能快的把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面,TCP在不可靠的IP层上提供了一个可靠的运输层。为了提供这种可靠的服务,TCP采用了超时重发,发送和接受端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。

任何具有多个接口的系统,英文都称作是多接口的。一个主机也可以有多个接口,但一般不称做路由器,除非它的功能只是单纯地把分组从一个接口传送到另一个接口。同样,路由器并不一定指那种在互联网中用来转发分组的特殊硬件盒。

连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网(LAN)组合在一起,这样对上层来说就好像是一个局域网。TCP/IP倾向于使用路由器而不是网桥来连接网络

3、TCP/IP的分层

在TCP/IP协议族中有很多种协议,下图是TCP/IP协议族中不同层次的协议:

image

TCP和UDP是两种最为著名的运输层协议,二者都是用IP作为网络层协议。

虽然TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务。UDP为应用程序发送和接受数据报。一个数据报是指从发送方传输到接收方的一个信息单元。但是与TCP不同的是,UDP是不可靠的,它不能保证数据报能安全无误的到达最终目的。

ICMP是IP协议的附属协议。IP层用它来与其它主机或路由器交换错误报文和其它重要信息。IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。

ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。

4、互联网的地址

互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址具有一定的结构,五类不同的互连网地址格式如下图:

image

这些32位的地址通常写成4个十进制的数,其中每个整数对应一个字节。这种表示方法称作”点分十进制表示法”。

4.1 A类地址

  • ⑴ A类地址第1字节为网络地址,其它3个字节为主机地址。
  • ⑵ A类地址范围:0.0.0.0 - 127.255.255.255
  • ⑶ A类地址中的私有地址和保留地址:
    • 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
    • 127.X.X.X是保留地址,用做循环测试用的。

4.2 B类地址

  • ⑴ B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址,但要扣除全0和全1的主机号。
  • ⑵ B类地址范围:128.0.0.0 - 191.255.255.255
  • ⑶ B类地址的私有地址和保留地址
    • B类网络地址128.0.0.0是不指派的,所以指派的B类最小网络地址是128.1.0.0。
    • 169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。

4.3 C类地址

  • ⑴ C类地址第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110。
  • ⑵ C类地址范围:192.0.0.1—223.255.255.254。
  • ⑶ C类地址中的私有地址:
    192.168.X.X是私有地址。

4.4 D类地址

  • ⑴ D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。
  • ⑵ D类地址范围:224.0.0.1—239.255.255.254

4.5 E类地址

  • ⑴ E类地址也不分网络地址和主机地址,它的第1个字节的前五位固定为11110。
  • ⑵ E类地址范围:240.0.0.1—255.255.255.254

全零0.0.0.0地址对应于当前主机。全“1”的IP地址255.255.255.255是当前子网的广播地址。

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
A类地址:10.0.0.0~10.255.255.255
B类地址:172.16.0.0~172.31.255.255
C类地址:192.168.0.0~192.168.255.255

5、域名系统

尽管通过IP地址可以识别主机上的网络接口,进而访问主机。但是人们最喜欢使用的还是主机名。在TCP/IP领域中,域名系统(DNS)是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息。

任何一个应用程序都可以调用一个标准的库函数来查看给定名字的主机的IP地址。类似地,系统还提供一个逆函数—给定主机的IP地址,查看它所对应的主机名。大多数使用主机名作为参数的应用程序也可以把IP地址作为参数。

6、封装

当应用程序使用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当做一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),下图描述了数据进入协议栈时的封装过程:

image

TCP传给IP的数据单元称作TCP报文段或简称为TCP段,IP传给网络接口层的数据单元称作IP数据报。通过以太网传输的比特流称作帧(Frame)。

UDP数据和TCP数据基本一致。唯一的不同是UDP传给IP的数据单元称作UDP数据报,而且UDP的首部长为8字节。

IP在首部中存入一个长度为8位的数值,称作协议域。1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。TCP和UDP都用一个16位的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。
网络接口分别要发送和接收IP,ARP,RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。

7、分用

当目的主机接收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用,如下图:

image

协议ICMP和IGMP定位一直是一件很棘手的事情。通常我们把它们和IP放在同一层上,因为它们是IP的附属协议。但是在这里,我们又把它们放在IP层的上面,因为ICMP和IGMP报文都被封装在IP数据报中。

8、客户-服务器模型

大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是让服务器为客户提供一些特定的服务。

可以将这种服务分为两种类型:重复型和并发型。重复型服务器阻塞依次完成各个服务;而并发型服务器则通过创建一个新的进程、任务或线程来处理服务,可以同时为多个客户服务。

9、端口号

前面已经指出过,TCP和UDP采用16位的端口号来识别应用程序。

服务器一般都是通过知名端口号来识别的。例如FTP的端口号为21;Telnet的TCP端口号为23;TFTP的端口号为69。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(IANA)来管理。

10、标准化过程

所有关于Internet的正式标准都以RFC文档出版。另外,大量的RFC并不是正式的标准,出版只是为了提供信息。RFC的篇幅从1页到200页不等。每一项都用一个数字来标识,如RFC1122,数字越大说明RFC的内容越新。

11、互联网

internet这个词第一个字母是否大写决定了它具有不同的含义。internet意思是用一个共同的协议族把多个网络连接起来。而Internet指的是世界范围内通过TCP/IP互相通信的所有主机集合。Internet是一个internet,但internet不等于Internet。

12、小结

TCP/IP协议族分为四层:链路层,网络层,运输层,应用层,每一层各有不同的责任。在TCP/IP中,网络层和运输层之间的区别是最为关键的:网络层(IP)提供点到点的服务,而运输层(TCP和UDP)提供端到端的服务。

一个互连网是网络的网络。构建互连网的共同基石是路由器,它们在IP层把网络连在一起。第一个字母大写的Internet是指分布在世界各地的大型互连网,其中包括1万多个网络和超过100万台主机。

在一个互联网上,每个接口都用IP地址来标识。尽管用户习惯使用主机名而不是IP地址。域名系统为主机名和IP地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。